#include <bits/stdc++.h>
using namespace std;
/**
 * @brief 圆桌问题
 * 圆桌边围坐着 2n个人。其中n个人是好人,另外n个人是坏人。
 * 从第一个人开始数,数到第 m 个人,立即赶走该人；
 * 然后从被赶走的人之后开始数,再将数到的第 m个人赶走,
 * 依此方法不断赶走围坐在圆桌边的人。预先应如何安排这些好人与坏人的座位,
 * 才能使得在赶走n个人之后圆桌边围坐的剩余的n个人全是好人?
 * 输入：多组数据,每组数据输入：n,m≤32767。
 * 输出：对于每一组数据,输出 2n个大写字母,“G”表示好人,“B”表示坏人,
 * 50 个字母为一行,不允许出现空白字符。相邻数据间留有一个空行。
 * 输入样例：
 * 2 3
 * 2 4
 * 输出样例：
 * GBBG
 * BGGB
 * @return int 
 */
int main(){
    vector<int> table;
    int n, m;
    while(cin>>n>>m){
        table.clear();
        for(int i = 0; i < 2 * n; i++){
            table.push_back(i); //初始化
        }
        int pos = 0;
        for(int i = 0; i < n; i++){
            //淘汰
            pos = (pos + m - 1) % table.size(); 
            table.erase(table.begin() + pos);
        }
        int j = 0;
        for(int i = 0; i < 2 * n; i++){
            if(!(i % 50) && i) cout<<endl;  //50个字母一行
            if(j < table.size() && i == table[j]){
                j++;
                cout<<"G";
            }else{
                cout<<"B";
            }
            
        }
        cout<<endl<<endl;   //相邻数据间留一行
    }
    return 0;
}